//返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 null 。
public class Solution {
    class ListNode {
        int value;
        ListNode next;

        public ListNode(int value) {
            this.value = value;
        }
    }
    public ListNode head;
    public ListNode getIntersectionNode(ListNode headA,
                                        ListNode headB) {
        ListNode p1=headA;//设p1是最长的链表
        ListNode p2=headB;//设p2是最短的链表
        int len1=0;
        while(p1!=null){
            p1=p1.next;
            len1++;
        }
        int len2=0;
        while(p2!=null){
            p2=p2.next;
            len2++;
        }
        p1=headA;
        p2=headB;
        int index=len1-len2;
        if(index<0){
            p1=headB;
            p2=headA;
            index=len2-len1;
        }
        while(index!=0){
            p1=p1.next;
            index--;
        }
        while(p1!=p2){
            p1=p1.next;
            p2=p2.next;
        }
        if(p1==null){
            return null;
        }
        return  p1;
    }
}